package com.hyt.it.ogt.kq.service.gov.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.hyt.it.ogt.kq.service.gov.model.param.proctor.ManualProctorParam;
import com.hyt.it.ogt.kq.service.gov.model.param.proctor.ProctorParam;
import com.hyt.it.ogt.kq.service.gov.model.param.proctor.ProctorRoomSearchParam;
import com.hyt.it.ogt.kq.service.gov.model.vo.examiner.*;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;
import java.util.Set;

public interface IProctorService {

    ProctorArrangeResultVO getProctorArrangeResult(String taskId);

    Set<String> getAncestorsByDeptId(String deptId);

    String getAreasByAreaId(String taskId, String areaId);

    String getCandidateAreasByAreaId(String taskId, String areaId);

    Page<ProctorArrangeRoomVO> getProctorRoom(Page<ProctorArrangeRoomVO> page, ProctorRoomSearchParam param);

    void checkLockState(String taskId);

    void manualProctorArrange(ManualProctorParam param);

    @Transactional(rollbackFor = Exception.class)
    void resetArrange(String taskId);

    void resetProctorArrange(String taskId);

    List<TimeRoomParamVO> getProctorParam(String taskId);

    List<ProctorVO> getProctor(ProctorParam param);

    /**
     * @param taskId
     * @param arrangeState 0-未编排，1-已编排，2-包括已编排和未编排数据
     * @return
     */
    List<ProctorCommonResponseTemplateVO> getPlace(String taskId, int arrangeState);

    /**
     * @param taskId
     * @param arrangeState 0-未编排，1-已编排，2-包括已编排和未编排数据
     * @return
     */
    List<ProctorCommonResponseTemplateVO> getRoom(String taskId, String placeId, int arrangeState);

    /**
     * @param taskId
     * @param arrangeState 0-未编排，1-已编排，2-包括已编排和未编排数据
     * @return
     */
    List<ProctorCommonResponseTemplateVO> getTime(String taskId, int arrangeState);

    void downloadProctorArrange(String taskId);

    void lockProctorArrange(String taskId, boolean lockState);

    void initProctorParam(String taskId);

    void checkProctorLockState(String taskId);
}

